/**
 * 名称：服务基础类
 * 创建人：Dada.
 * 创建时间：2021年07月26日22:47:19
 */
export default class BaseService {
    utools = window.utools || {};
    db = this.utools.db;

    /**
     * 保存（update or insert）
     * _rev如果存在，则更新，如果不存在则新增
     * @param item
     * @returns {DbReturn}
     */
    save(item) {
        if (!item._id) {
            throw new Error("_id属性不能为空");
        }
        return this.db.put(item);
    }

    /**
     * 批量更新
     * @param list
     * @returns {DbReturn[]}
     */
    batchUpdate(list) {
        if (list.length !== 0) {
            let rList = this.db.bulkDocs(list);
            rList.map((item, index) => {
                list[index]._rev = item.rev
            })
        }
    }

    /**
     * 批量保存
     * @param list
     * @returns {DbReturn[]}
     */
    batchSave(list) {
        list.map((item, index) => {
            let res = this.save(item);
            list[index]._rev = res.rev;
        })
        return list;
    }


    /**
     * 获取一条数据
     * @param id
     * @returns {DbDoc}
     */
    get(id) {
        return this.db.get(id);
    }

    /**
     * 获取指定key或者指定key开头的数据集合
     * @param key
     */
    getList(key) {
        return this.utools.db.allDocs(key)
    }

    /**
     * 获取所有数据
     */
    getAllList() {
        return this.getList();
    }

    /**
     * 根据ID删除数据
     * @param id
     */
    delete(id) {
        this.db.remove(id);
    }
}